.TITLE DRGPP .IDENT /08.00/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; VERSION 07.06 ; ; D. N. CUTLER 3-JAN-74 ; ; MODIFIED FOR RSX-11M-PLUS VERSION 1 BY: ; ; T. J. MILLER ; J. E. PROVINO ; ; MODIFIED FOR RSX-11M-PLUS VERSION 2.0 BY: ; ; J. M. LAWLER ; T. M. MARTIN ; ; MODIFIED FOR RSX-11M-PLUS VERSION 4.1 BY: ; ; B. S. MCCARTHY 13-APR-88 08.00 ; ; BM410 -- CHANGE GPP TO CALL SRMAI FOLLOWED BY SRNAM ; ; MACRO LIBRARY CALLS ; .MCALL PCBDF$,TCBDF$,HDRDF$ HDRDF$ ;DEFINE TASK HEADER OFFSETS PCBDF$ ;DEFINE PARTITION CONTROL BLOCK OFFSETS TCBDF$ ;DEFINE TASK CONTROL BLOCK OFFSETS ;+ ; **-$DRGPP-GET PARTITION PARAMETERS ; ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL A THREE WORD BUFFER WITH ; PARTITION PARAMETERS. ; ; DPB FORMAT: ; ; WD. 00 -- DIC(65.),DPB SIZE(4.). ; WD. 01 -- FIRST HALF OF OPTIONAL PARTITION NAME. ; WD. 02 -- SECOND HALF OF OPTIONAL PARTITION NAME. ; WD. 03 -- ADDRESS OF A THREE WORD BUFFER. ; ; BUFFER FORMAT: ; ; WD. 00 -- BASE ADDRESS OF PARTITION IN 32W BLOCKS. ; WD. 01 -- SIZE OF PARTITION IN 32W BLOCKS. ; WD. 02 -- PARTITION FLAGS WORD. ; ; INPUTS: ; ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK. ; R3=ADDRESS OF THE PARTITION NAME IN THE DPB. ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS EQUAL TO THE STARTING VIRTUAL ADDRESS ; OF THE SPECIFIED PARTITION IS RETURNED. ; C=1 IF DIRECTIVE IS REJECTED. ; DIRECTIVE STATUS OF 'D.RS2' IS RETURNED IF SPECIFIED ; PARTITION IS NOT IN SYSTEM. ; ; IF THE PARTITION IS A TASK REGION, THE EXTERNAL HEADER ; IS NOT INCLUDED IN THE PARTITION PARAMETERS BECAUSE ; IT IS NOT MAPPED BY THE TASK. ; ;- $DRGPP:: ;REFERENCE LABEL .IF DF P$$LAS .IF DF U$$DAS MOV T.ST4(R5),-(SP) ;SAVE I/D TASK INDICATOR .ENDC ; DF U$$DAS MOV H.WND(R4),-(SP) ;SAVE POINTER TO WINDOW BLOCKS TST (R3)+ ;PARTITION NAME SPECIFIED? BNE 10$ ;IF NE YES CALL $SRATT ;SEARCH FOR REGION ID MOV A.PCB(R5),R2 ;PICK UP PCB ADDRESS BR 30$ ; 10$: TST -(R3) ;POINT TO FIRST WORD OF PARTITION NAME .IFF TST (R3) ;PARTITION NAME SPECIFIED? BNE 5$ ;IF NE YES MOV T.PCB(R5),R4 ;GET TASK REGION PCB TST (R3)+ ;POINT TO SECOND WORD OF PARTITION NAME BR 40$ ; .ENDC ; JUST FOR THE RECORD: GPRT$ SHOULD, ACCORDING TO THE DOCUMENTATION ; AND ACCORDING TO RSX-11M'S BEHAVIOR, LOOK ONLY AT MAIN PARTITIONS. ; THIS WOULDN'T MATTER EXCEPT FOR THE CHANGE TO PLSUB/DRREG TO MAKE ; IT POSSIBLE TO CREATE A REGION GEN IN PARTITION GEN. THE CHANGE ; MAKES SRNAM NOT LOOK AT MAIN PARTITIONS, SO GRTP$ DOESN'T LOOK ; AT MAINS AFTER THAT CHANGE. SIMPLY CHANGING THE $SRNAM CALL HERE ; TO A $SRMAI MEANS THAT GPRT$ DIRECTIVES FOR NAMED REGIONS, WHICH ; USED TO WORK, WON'T ANY MORE. THIS PROBABLY ISN'T SO HOT, SO WE ; CALL $SRMAI AND $SRNAM. BUT, DOING IT IN THE ORDER IT USED TO BE ; DONE IN ISN'T ATTRACTIVE EITHER, SINCE TKB WOULD FIND THE GEN ; REGION WITH A GPRT$ INSTEAD OF THE GEN MAIN PARTITION, AND MIGHT ; NOT BUILD SOME TASKS CORRECTLY AS A RESULT. SO, WE LOOK AT MAINS ; FIRST, AND THEN NAMED COMMONS. APPLICATIONS WHICH DEPENDED ON ; GETTING THE NAME OF A REGION WHICH DUPLICATES A MAIN PARTITION ; WILL NOT SURVIVE THIS CHANGE. 5$: CALL $SRMAI ;SEARCH FOR NAMED MAIN PARTITION BCC 20$ ;IF CC NAMED PARTITION FOUND CALL $SRNAM ;SEARCH FOR NAMED PARTITION BCC 20$ ;IF CC NAMED PARTITION FOUND DRSTS D.RS2 ;INVALID PARTITION NAME 20$: TST (R3)+ ;ADVANCE POINTER 30$: MOV R2,R4 ;COPY PCB POINTER .IF DF P$$LAS MOV (SP)+,R1 ;RESTORE POINTER TO WINDOW BLOCKS TST (R1)+ ;ADVANCE POINTER TO WINDOW 0 .IFTF ; DF P$$LAS .IF DF U$$DAS CLR 4(SP) ;SET DIRECTIVE STATUS .IFF ; DF U$$DAS CLR 2(SP) ;SET DIRECTIVE STATUS .ENDC ; DF U$$DAS .IFT ; DF P$$LAS .IF DF U$$DAS BIT #T4.DSP,(SP)+ ;USER TASK HAVE D SPACE ENABLED ? BEQ 35$ ;IF EQ, NO ADD #W.BLGH,R1 ;YES, WINDOW 1 MAPS D SPACE 35$: ;REFERENCE LABEL .ENDC ; DF U$$DAS ASSUME W.BPCB ASSUME W.BLVR-2 CMP (R1)+,R4 ;TARGET PARTITION TASK REGION (W.BPCB) BNE 40$ ;IF NOT, RETURN '0' STARTING ADDR MOV (R1),2(SP) ;STARTING ADDRESS (W.BLVR) FROM WIN 0/1 .ENDC ; DF P$$LAS 40$: MOV 2(R3),R3 ;GET ADDRESS OF 3 WORD BUFFER MOV #3*2,R1 ;SET LENGTH OF BUFFER CALL $ACHKP ;ADDRESS CHECK BUFFER .IF DF X$$HDR MOVB P.HDLN(R4),R1 ;GET LENGTH OF EXTERNAL HEADER (IF ANY) MOV P.REL(R4),(R3) ;CALCULATE STARTING ADDRESS OF PARTITION ADD R1,(R3)+ ;EXCLUDING POSSIBLE EXTERNAL HEADER .IFF ; DF X$$HDR MOV P.REL(R4),(R3)+ ;GET BASE ADDRESS OF PARTITION .IFT ; DF X$$HDR MOV P.SIZE(R4),(R3) ;INSERT SIZE OF PARTITION SUB R1,(R3)+ ;MINUS ANY EXTERNAL HEADER .IFF ; DF X$$HDR MOV P.SIZE(R4),(R3)+ ;INSERT SIZE OF PARTITION .ENDC ; DF X$$HDR CLR (R3) ;INSERT CODE FOR SYSTEM CONTROLLED PAR 60$: RETURN .END